package com.wing.product.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.wing.product.model.entity.ProductDetail;
import com.wing.web.excel.ProductDetailExcelIn;

import java.util.List;
import java.util.Map;

/**
 * 产品明细表-Service
 *
 * @author
 */
public interface ProductDetailService extends IService<ProductDetail> {

    /**
     * 添加
     *
     * @param productDetail
     * @return
     */
    int add(ProductDetail productDetail);

    /**
     * 列表-app
     *
     * @param params
     * @return
     */
    List<ProductDetail> list4app(Map<String, Object> params);

    /**
     * 分页list-app
     *
     * @param page
     * @param params
     * @return
     */
    Page<ProductDetail> pageList4app(Page page, Map<String, Object> params);

    /**
     * 详情-app
     *
     * @param id
     * @return
     */
    ProductDetail get4appById(Long id);

    /**
     * 删除产品详情
     *
     * @param productId
     */
    void deleteProductDetailByProductId(Long productId);

    ProductDetail getProductDetailBySkuCode(String skuCode);

    IPage<ProductDetail> getProductDetailPageList(ProductDetail productDetail, Integer page, Integer limit);

    /**
     * 查询在库产品列表
     *
     * @param page
     * @param limit
     * @param id
     * @param id
     * @return type 0 在库产品列表 1采购入库计划选择产品列表
     */
    IPage<ProductDetail> getInventoryProductDetailPageList(Integer page, Integer limit, String skuName, String skuCode, Long productTypeId, Long id, Integer type);

    /**
     * 导入
     *
     * @param list
     */
    void importExcel(List<ProductDetailExcelIn> list);

    /**
     * 根据sku_Code查询
     *
     * @param skuCode
     */
    ProductDetail getProductDetailBySkuCodeNo(String skuCode);

    /**
     * 畅捷通-存货同步
     */
    void chanjetInventorySync();

    /**
     * 物料-类别绑定
     *
     * @param productTypeId    类别ID
     * @param productDetailIds 物料ID列表
     */
    void productDetailBind(Long productTypeId, List<String> productDetailIds);

}
